package projetolp2.Tests;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import projetolp2.Sistem.*;

public class testaEstabelecimento {
	
	private Estabelecimento umEstabelecimento;
	
	@Before
	
	public void criaEstabelecimento() throws Exception{
		
		umEstabelecimento = new Estabelecimento("Bonaparte","No SHOPPING",TipoDeAlmoco.A_LACARTE,TipoDeEstabelecimento.RESTAURANTE,0);
		
	}
	@Test
	public void testGets() throws Exception{
		
		Assert.assertEquals("Nome nao corresponde ao esperado!",umEstabelecimento.getNome(),"Bonaparte");
		Assert.assertEquals("Endereco nao corresponde ao esperado!",umEstabelecimento.getEndereco(),"No SHOPPING");
		Assert.assertEquals("Tipo de almoco nao corresponde ao esperado!",umEstabelecimento.getTipoAlmoco(),TipoDeAlmoco.A_LACARTE);
		Assert.assertEquals("Tipo de estabelecimento nao corresponde ao esperado!",umEstabelecimento.getTipoEstabelecimento(),TipoDeEstabelecimento.RESTAURANTE);
		
	}
	@Test
	public void testSet(){
		
		umEstabelecimento.setNome("Cantina da Sayonara");
		Assert.assertEquals("Nome mudado icorretamente!",umEstabelecimento.getNome(),"Cantina da Sayonara");
		umEstabelecimento.setEndereco("Na UFCG");
		Assert.assertEquals("Endereco mudado icorretamente!", umEstabelecimento.getEndereco(), "Na UFCG");
		umEstabelecimento.setTipoAlmoco(TipoDeAlmoco.PRATO_FEITO);
		Assert.assertEquals("Tipo de almoco mudado incorretamente!", umEstabelecimento.getTipoAlmoco(), TipoDeAlmoco.PRATO_FEITO);
		umEstabelecimento.setTipoEstabelecimento(TipoDeEstabelecimento.CANTINA);
		Assert.assertEquals("Tipo de estabelecimento mudado incorretamente!",umEstabelecimento.getTipoEstabelecimento(), TipoDeEstabelecimento.CANTINA);
		
	}
	
	@Test
	public void testConstrutor(){	
		try{
			new Estabelecimento("","No SHOPPING",TipoDeAlmoco.A_LACARTE,TipoDeEstabelecimento.RESTAURANTE,0);
		}catch (Exception e){
			Assert.assertEquals("Nome de estbalecimento errado!","Nome nao pode ser vazio ou nulo!", e.getMessage());
		}
		try{
		    new Estabelecimento(null,"No SHOPPING",TipoDeAlmoco.A_LACARTE,TipoDeEstabelecimento.RESTAURANTE,0);
		}catch(Exception e){
			Assert.assertEquals("Nome de estabelecimento errado!","Nome nao pode ser vazio ou nulo!",e.getMessage());
		}
		try{
			new Estabelecimento("Bonaparte","",TipoDeAlmoco.A_LACARTE,TipoDeEstabelecimento.RESTAURANTE,0);
		}catch(Exception e){
			Assert.assertEquals("Endereco de estabelecimento errado!","Endereco nao pode ser vazio ou nulo!",e.getMessage());
		}
		try{
			new Estabelecimento("Bonaparte",null,TipoDeAlmoco.A_LACARTE,TipoDeEstabelecimento.RESTAURANTE,0);
		}catch(Exception e){
			Assert.assertEquals("Endereco de estabelecimento errado!","Endereco nao pode ser vazio ou nulo!",e.getMessage());
		}
		try{
			new Estabelecimento("Bonaparte","No SHOPPING",null,TipoDeEstabelecimento.RESTAURANTE,0);
		}catch(Exception e){
			Assert.assertEquals("Tipo de almoco de estabelecimento errado!","Tipo de almoco nao pode ser nulo!",e.getMessage());
		}
		try{
			new Estabelecimento("Bonaparte","No SHOPPING",TipoDeAlmoco.A_LACARTE,null,0);
		}catch(Exception e){
			Assert.assertEquals("Tipo de almoco de estabelecimento errado!","Tipo de almoco nao pode ser nulo!",e.getMessage());
		}
		
	}
	
	@Test
	public void testEquals(){
		
		Assert.assertTrue(!umEstabelecimento.equals(null));
		Assert.assertEquals(umEstabelecimento, umEstabelecimento);

	}
	
	@Test
	public void testToString(){
		Assert.assertEquals("ToString errado!","Nome: Bonaparte Endereco: No SHOPPING Tipo de Almoco: Tipo de Almocoa la carte Tipo de Estabelecimento: Tipo de Estabelecimento: Restaurante", umEstabelecimento.toString());
	}

}
    
    
    
